{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f721d71b38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(100,)\n"
     ]
    }
   ],
   "source": [
    "data = np.genfromtxt('data.csv',delimiter=',')\n",
    "x_data = data[:,0]\n",
    "y_data = data[:,1]\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()\n",
    "print(x_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#数据中心化\n",
    "def zeroMean(dataMat):\n",
    "    #按列求平均，即各个特征的平均\n",
    "    meanVal = np.mean(dataMat,axis=0)\n",
    "    newData = dataMat - meanVal\n",
    "    return newData,meanVal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "newData,meanVal = zeroMean(data)\n",
    "#np.cov用于求助协方差矩阵，参数rowvar=0说明数据一行代表一个样本\n",
    "covMat = np.cov(newData,rowvar=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  94.99190951,  125.62024804],\n",
       "       [ 125.62024804,  277.49520751]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#协方差矩阵\n",
    "covMat\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#np.linalg.eig求矩阵的特征值和特征向量\n",
    "eigVals,eigVects = np.linalg.eig(np.mat(covMat))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  30.97826888,  341.50884814])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#特征值\n",
    "eigVals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[-0.89098665, -0.45402951],\n",
       "        [ 0.45402951, -0.89098665]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#特征向量\n",
    "eigVects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1], dtype=int64)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#对特征值从小到大排序\n",
    "eigValIndice = np.argsort(eigVals)\n",
    "eigValIndice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "top = 1\n",
    "#最大的top个特征值的下标\n",
    "n_eigValIndice = eigValIndice[-1:-(top+1):-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1], dtype=int64)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n_eigValIndice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[-0.45402951],\n",
       "        [-0.89098665]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#最大的top个特征值对应的特征向量\n",
    "n_eigVect = eigVects[:,n_eigValIndice]\n",
    "n_eigVect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ 44.02694787],\n",
       "        [  1.49722533],\n",
       "        [  3.35564513],\n",
       "        [  1.73205523],\n",
       "        [-17.84406034],\n",
       "        [ -7.68710859],\n",
       "        [ -7.6311404 ],\n",
       "        [ 16.4703207 ],\n",
       "        [ -1.92574891],\n",
       "        [ -0.35289859],\n",
       "        [ 17.26071108],\n",
       "        [-11.13030667],\n",
       "        [ 11.73358623],\n",
       "        [ -6.54975245],\n",
       "        [-11.27989566],\n",
       "        [ 10.70315359],\n",
       "        [ -7.11092921],\n",
       "        [-27.10646295],\n",
       "        [ 22.80011879],\n",
       "        [ 18.73367246],\n",
       "        [-17.75232043],\n",
       "        [-48.32951839],\n",
       "        [ 14.46601408],\n",
       "        [ 22.36856421],\n",
       "        [ -3.66790828],\n",
       "        [ -6.5367338 ],\n",
       "        [-24.03511973],\n",
       "        [-26.696945  ],\n",
       "        [ -4.62040617],\n",
       "        [-10.25663202],\n",
       "        [  6.87141913],\n",
       "        [ 33.98731832],\n",
       "        [ -0.49795028],\n",
       "        [-25.59431857],\n",
       "        [ -5.08219623],\n",
       "        [  7.07400117],\n",
       "        [-10.3589004 ],\n",
       "        [ 26.81843789],\n",
       "        [ 15.13930397],\n",
       "        [ 15.74751369],\n",
       "        [ 19.86509486],\n",
       "        [ 15.18178022],\n",
       "        [ -9.56831765],\n",
       "        [ 12.3873416 ],\n",
       "        [-44.24922602],\n",
       "        [ 31.5989945 ],\n",
       "        [ 20.60936247],\n",
       "        [-15.69205803],\n",
       "        [ 24.68142619],\n",
       "        [-25.71953206],\n",
       "        [ -1.70011545],\n",
       "        [  8.82426933],\n",
       "        [ 10.18596708],\n",
       "        [  9.92767378],\n",
       "        [ -1.59054221],\n",
       "        [ -1.35713786],\n",
       "        [ -2.23178334],\n",
       "        [-18.42859066],\n",
       "        [-10.81013855],\n",
       "        [ 15.48471562],\n",
       "        [ 13.37698622],\n",
       "        [  2.01510615],\n",
       "        [-13.45929748],\n",
       "        [ 11.60631421],\n",
       "        [  9.47911818],\n",
       "        [ 29.10215592],\n",
       "        [-14.62799906],\n",
       "        [-24.1314861 ],\n",
       "        [ -2.92304672],\n",
       "        [ 23.86122122],\n",
       "        [ 27.79335708],\n",
       "        [  5.96631636],\n",
       "        [  1.4680452 ],\n",
       "        [ 15.95209101],\n",
       "        [-37.79638897],\n",
       "        [-10.36346217],\n",
       "        [-20.58776205],\n",
       "        [ 21.05647364],\n",
       "        [ -9.181336  ],\n",
       "        [ 29.38968703],\n",
       "        [-10.26417212],\n",
       "        [-12.86474835],\n",
       "        [ 21.79735392],\n",
       "        [ -8.94685441],\n",
       "        [-27.45655642],\n",
       "        [ -8.10672783],\n",
       "        [  1.83592538],\n",
       "        [  2.27166878],\n",
       "        [  1.30641927],\n",
       "        [ 15.10178496],\n",
       "        [ 12.23038321],\n",
       "        [-13.67232328],\n",
       "        [-46.52044765],\n",
       "        [-14.2546318 ],\n",
       "        [-31.2297683 ],\n",
       "        [ -8.32905498],\n",
       "        [  0.42750425],\n",
       "        [-11.625534  ],\n",
       "        [  6.16748059],\n",
       "        [ 27.99826548]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#低维特征空间的数据\n",
    "lowDDataMat = newData*n_eigVect\n",
    "lowDDataMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[  28.96880808,   33.50762783],\n",
       "        [  48.27855698,   71.40104277],\n",
       "        [  47.43477956,   69.74521555],\n",
       "        [  48.17193728,   71.19181247],\n",
       "        [  57.06007136,   88.63387007],\n",
       "        [  52.44851558,   79.58416168],\n",
       "        [  52.42310436,   79.53429476],\n",
       "        [  41.4803299 ,   58.06021471],\n",
       "        [  49.83268829,   74.45086712],\n",
       "        [  49.11856784,   73.04947849],\n",
       "        [  41.12146934,   57.35598744],\n",
       "        [  54.0118291 ,   82.65200519],\n",
       "        [  43.6309471 ,   62.28058188],\n",
       "        [  51.93212233,   78.57079254],\n",
       "        [  54.07974691,   82.78528698],\n",
       "        [  44.09879393,   63.19868361],\n",
       "        [  52.18691313,   79.07079354],\n",
       "        [  61.26547544,   96.88654713],\n",
       "        [  38.6064148 ,   52.42044913],\n",
       "        [  40.45270141,   56.04359851],\n",
       "        [  57.01841873,   88.55213104],\n",
       "        [  70.90136881,  115.79600617],\n",
       "        [  42.39034424,   59.84602515],\n",
       "        [  38.80235331,   52.80495849],\n",
       "        [  50.62368004,   76.00310786],\n",
       "        [  51.92621148,   78.55919309],\n",
       "        [  59.87099499,   94.15002133],\n",
       "        [  61.07954221,   96.52167211],\n",
       "        [  51.05614219,   76.85177076],\n",
       "        [  53.61515503,   81.87357274],\n",
       "        [  45.83851443,   66.61270785],\n",
       "        [  33.52709612,   42.45280371],\n",
       "        [  49.18442558,   73.1787176 ],\n",
       "        [  60.57891727,   95.53924668],\n",
       "        [  51.2658085 ,   77.26321954],\n",
       "        [  45.74653621,   66.43220996],\n",
       "        [  53.66158789,   81.96469251],\n",
       "        [  36.78197936,   48.84018045],\n",
       "        [  42.08465077,   59.24613285],\n",
       "        [  41.80850561,   58.70422611],\n",
       "        [  39.93900226,   55.03551626],\n",
       "        [  42.06536529,   59.20828708],\n",
       "        [  53.30263999,   81.26029383],\n",
       "        [  43.33412288,   61.69809458],\n",
       "        [  69.04879568,  112.16052014],\n",
       "        [  34.61146561,   44.58076835],\n",
       "        [  39.6010828 ,   54.37238375],\n",
       "        [  56.08299881,   86.71646474],\n",
       "        [  37.75224573,   50.74422935],\n",
       "        [  60.63576789,   95.65081023],\n",
       "        [  49.73024404,   74.24983072],\n",
       "        [  44.95186282,   64.8727444 ],\n",
       "        [  44.33361186,   63.65948988],\n",
       "        [  44.45088464,   63.88962576],\n",
       "        [  49.68049456,   74.15220243],\n",
       "        [  49.57452209,   73.94424227],\n",
       "        [  49.97163695,   74.72353971],\n",
       "        [  57.32546537,   89.15467878],\n",
       "        [  53.86646332,   82.36673967],\n",
       "        [  41.92782368,   58.93837568],\n",
       "        [  42.88479502,   60.81633443],\n",
       "        [  48.04342381,   70.93961788],\n",
       "        [  55.06925964,   84.7271049 ],\n",
       "        [  43.68873236,   62.39397956],\n",
       "        [  44.65454212,   64.28928282],\n",
       "        [  35.745104  ,   46.80541819],\n",
       "        [  55.59988464,   85.76840241],\n",
       "        [  59.91474817,   94.23588248],\n",
       "        [  50.28549092,   75.33944616],\n",
       "        [  38.12464298,   51.47502102],\n",
       "        [  36.33933729,   47.97154048],\n",
       "        [  46.24945779,   67.41914234],\n",
       "        [  48.29180562,   71.42704188],\n",
       "        [  41.71562146,   58.52195044],\n",
       "        [  66.11901726,  106.41112849],\n",
       "        [  53.66365907,   81.96875698],\n",
       "        [  58.30579289,   91.07847166],\n",
       "        [  39.39808114,   53.97401367],\n",
       "        [  53.12693891,   80.91549835],\n",
       "        [  35.61455639,   46.54923181],\n",
       "        [  53.61857845,   81.88029087],\n",
       "        [  54.79931679,   84.19736957],\n",
       "        [  39.06169964,   53.31389924],\n",
       "        [  53.02047735,   80.70657838],\n",
       "        [  61.4244282 ,   97.19847574],\n",
       "        [  52.63903509,   79.95803681],\n",
       "        [  48.12477717,   71.09926555],\n",
       "        [  47.92693681,   70.711024  ],\n",
       "        [  48.36518856,   71.57104842],\n",
       "        [  42.1016855 ,   59.27956179],\n",
       "        [  43.40538662,   61.83794241],\n",
       "        [  55.16597964,   84.91690805],\n",
       "        [  70.07999731,  114.18414829],\n",
       "        [  55.43036489,   85.43573717],\n",
       "        [  63.13757772,  100.56035714],\n",
       "        [  52.73997818,   80.15612733],\n",
       "        [  48.76424192,   72.35414998],\n",
       "        [  54.23667692,   83.09324613],\n",
       "        [  46.1581233 ,   67.23990769],\n",
       "        [  36.24630282,   47.78896982]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#利用低维度数据来重构数据\n",
    "reconMat = (lowDDataMat*n_eigVect.T)+meanVal\n",
    "reconMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f721d84518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = np.genfromtxt('data.csv',delimiter=',')\n",
    "x_data = data[:,0]\n",
    "y_data = data[:,1]\n",
    "plt.scatter(x_data,y_data)\n",
    "\n",
    "#重构数据\n",
    "x_data = np.array(reconMat)[:,0]\n",
    "y_data = np.array(reconMat)[:,1]\n",
    "plt.scatter(x_data,y_data,c='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [Root]",
   "language": "python",
   "name": "Python [Root]"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
